/**
 * Diese Klasse modeliert einen Gegenstand mit seinem Namen und seiner
 * Beschreibung sowie seinem Gewicht.
 * 
 * @author tebe
 * @version 1.0
 *
 */
public class Gegenstand {
	private final String name;
	private final String beschreibung;
	private final int gewicht;
	

	/**
	 * Erzeugt einen Gegenstand mit Namen und Gewicht aber ohne genauere
	 * Beschreibung.
	 * 
	 * Der Name darf nicht null sein und das Gewicht muss groesser als 0 sein.
	 * 
	 * @param name    Der Name des Gegenstands
	 * @param gewicht Das Gewicht des Gegenstands
	 */
	public Gegenstand(String name, int gewicht) {
		this(name, "", gewicht);
	}

	/**
	 * Erzeugt einen Gegenstand mit Namen und Gewicht und genauere Beschreibung.
	 * 
	 * Name und Beschreibung duerfen nicht null sein und das Gewicht muss groesser
	 * als 0 sein.
	 * 
	 * @param name    Der Name des Gegenstands
	 * @param gewicht Das Gewicht des Gegenstands
	 */
	public Gegenstand(String name, String beschreibung, int gewicht) {
		this.name = name;
		this.gewicht = gewicht;
		this.beschreibung = beschreibung;
		if (!istDefinitionGueltig()) {
			throw new IllegalArgumentException("Gegenstandsdefinition ist ungueltig.");
		}
	}
	
	private boolean istDefinitionGueltig() {
		return !(name == null || beschreibung == null || gewicht <= 0);
	}

	/**
	 * @return Der Name des Gegenstands
	 */
	public String gibName() {
		return name;
	}

	/**
	 * Gibt die Beschreibung des Gegenstandes zurueck. Falls der Gegenstand ueber
	 * keine Beschreibung verfuegt, wird ein leerer String zurueckgegeben.
	 * 
	 * @return Die Beschreibung des Gegenstands
	 */
	public String gibBeschreibung() {
		return beschreibung;
	}

	/**
	 * @return Das Gewicht des Gegenstands
	 */
	public int gibGewicht() {
		return gewicht;
	}
}
